import { _decorator, Component, Node, director, Canvas, Scene } from 'cc';
import { GlobalUserIDManager } from './GlobalUserIDManager';
const { ccclass, property } = _decorator;

/**
 * 全局用户ID管理器初始化组件
 * 在游戏开始时自动创建GlobalUserIDManager实例
 */
@ccclass('GlobalUserIDInit')
export class GlobalUserIDInit extends Component {

    onLoad() {
        console.log('GlobalUserIDInit: 开始初始化...');
        
        // 确保只创建一次
        const existingManager = GlobalUserIDManager.getInstance();
        if (!existingManager) {
            console.log('GlobalUserIDInit: 未找到现有管理器，开始创建新的...');
            this.initGlobalUserIDManager();
        } else {
            console.log('GlobalUserIDInit: 管理器已存在，跳过初始化');
        }
    }

    /**
     * 初始化全局用户ID管理器
     */
    private initGlobalUserIDManager() {
        console.log('GlobalUserIDInit: 开始初始化GlobalUserIDManager...');
        
        // 查找当前场景的Canvas
        const canvas = director.getScene()?.getComponentInChildren(Canvas);
        if (canvas) {
            console.log('GlobalUserIDInit: 找到Canvas，创建管理器节点...');
            
            // 创建一个新节点用于GlobalUserIDManager
            const managerNode = new Node('GlobalUserIDManager');
            
            // 添加GlobalUserIDManager组件
            const manager = managerNode.addComponent(GlobalUserIDManager);
            
            // 将节点添加到Canvas下
            canvas.node.addChild(managerNode);
            
            // 设置节点为常驻节点，跨场景不销毁
            director.addPersistRootNode(managerNode);
            
            console.log('GlobalUserIDInit: GlobalUserIDManager 初始化完成');
            console.log('GlobalUserIDInit: 管理器实例:', GlobalUserIDManager.getInstance());
        } else {
            console.error('GlobalUserIDInit: 未找到Canvas，无法初始化GlobalUserIDManager');
        }
    }
}
